/**
 * 여러 목적으로 만든 라이브러리
 * 
 */

var UTools = (function()
{
	this.io = null;
	
	UTools.prototype.connectDB = function(month)
	{
		this.io = month;
		
		console.log("test this.io : " + this.io);
		
		return this.io;
	};

	UTools.prototype.addEvent_click = function(id, callback)
	{
		var linkElement = document.getElementById(id);
		
		// 클릭 이벤트 강제 발생
//		if( /*@cc_on ! @*/ false ) {
//		    // IE
//		    linkElement.fireEvent("onclick");
//		} else {
//		    // Others
//		    var event = document.createEvent("MouseEvents");
//		    event.initEvent("click", false, true);
//		    linkElement.dispatchEvent(event);
//		}
		
		
		return this;
	};
	
	
	UTools.prototype.hashCode = function(str, hash) // String.hashCode()와 동일한 구현
	{
	    if (str.length == 0) return hash;
	    for (var i = 0; i < str.length; i++)
	    {
	        char = str.charCodeAt(i);
	        hash = ((hash<<5)-hash)+char;
	        hash = hash & hash; // Convert to 32bit integer
	    }
	    return hash;
	};

	UTools.prototype.djb2Code = function(str)
	{
	    var hash = 5381;
	    for (var i = 0; i < str.length; i++)
	    {
	        char = str.charCodeAt(i);
	        hash = ((hash << 5) + hash) + char; /* hash * 33 + c */
	    }
	    return hash;
	};

	UTools.prototype.sdbmCode = function(str, hash) // 추천
	{
	    for (var i = 0; i < str.length; i++)
	    {
	        char = str.charCodeAt(i);
	        hash = char + (hash << 6) + (hash << 16) - hash;
	    }
	    return hash;
	};

	UTools.prototype.loseCode = function(str, hash) // 손실형
	{
	    for (var i = 0; i < str.length; i++)
	    {
	        char = str.charCodeAt(i);
	        hash += char;
	    }
	    return hash;
	};
});

var StringBuffer = (function()
{
	this.__strings__ = [];

	StringBuffer.prototype.append = function(str)
	{
		this.__strings__.push(str);
	};

	StringBuffer.prototype.toString = function(delimiter)
	{
		return this.__strings__.join(delimiter);
	};
});